class ReportsController < ApplicationController
  require "rexml/document"
  require "rexml/xpath"

  def initialize
    @d = Deposito.find :all
    @hoje = Date.new(Time.now.year, Time.now.month, Time.now.day).to_s(:db)
    @relatorio_data = ""
    @faturamento_acumulado = ""
    @hora = ""
    @deposito_faturado_nome = ""
    @deposito_faturado_id = ""
    @valor_faturado = ""
    @total_faturado = ""
    @valor_carregamento_snota = ""
    @deposito_separando_nome = ""
    @deposito_separando_id = ""
    @valor_separando = ""
    @total_separando = ""
    @valor_movimento_cd = ""
    @valor_gerado = ""
    @valor_falt_ger = ""
    @total_gera_doc = ""
    @deposito_dispo_dia_nome = ""
    @deposito_dispo_dia_id = ""
    @valor_dispo_dia = ""
    @total_dispo_dia = ""
  end
  
  def xml
    if exist_xml
      s = hora_xml(abrir_xml)
      salva_xml(s)
    else
      s = hora_xml(raiz_xml)
      salva_xml(s)
    end
    render :text => s
  end
  
  def exist_xml
    return File.exist?("public/email/#{@hoje}.xml")
  end
  
  def abrir_xml
    @xml = REXML::Document.new File.open("public/email/#{@hoje}.xml")
    #render :text => xml.to_a
  end
  
  def doc_xml
    #Criando Estutura XML
    doc = REXML::Document.new

    #criando a delcaração
    xmldecl = REXML::XMLDecl.new("1.0","ISO-8859-1")
    doc.add xmldecl
    
    return doc
  end
  
  def no(nome)
    REXML::Element.new(nome)
  end  
  
  def raiz_xml
    @faturamento_acumulado = 0
    FatAnterior.find(:all).each do |fatant|
      @faturamento_acumulado += fatant.total 
    end
    @relatorio_data = @hoje
    
    doc = doc_xml

    #criando Relatorio
    relatorio = no("relatorio")
    doc.add_element relatorio
    
    #Data em Relatorio
    data = no("data")
    data.text = "#{@relatorio_data}"
    relatorio.add_element data
      
    #Faturamento Acumulado
    faturamento_acumulado = no("faturamento_acumulado")
    faturamento_acumulado.text = "#{@faturamento_acumulado}"
    relatorio.add_element faturamento_acumulado
    
    return doc
  end

  def hora_xml(doc)
    @hora = Time.now.hour.to_s.size == 1 ? "0" + Time.now.hour.to_s : Time.now.hour

    relatorio = doc.root
    if relatorio.elements.each('horario').empty?
      add_hora_xml(relatorio)
    else
      relatorio.elements.each('horario') do |hora|
        if hora.attributes['hora'] == @hora
          hora = add_hora_xml(relatorio)
        else
          add_hora_xml(relatorio)
        end
      end
    end
          
    #escreve o arquivo
    s = ""
    relatorio.write(s,0)
    return s
  end       
  
  def add_hora_xml(relatorio)
    
    @valor_carregamento_snota = @d[0].soma_s_data(3,@hoje[0..6])
    @valor_movimento_cd
    @valor_gerado = @d[0].soma_s(10)
    @valor_falt_ger = @d[0].soma_s(15)  
    @total_gera_doc = @valor_gerado + @valor_falt_ger
    
    #relatorio = doc.root
    
    #hora
    hora = no("horario")
    hora.attributes["hora"] = "#{@hora}"
    relatorio.add_element hora
    
    #Faturado em hora
    faturado = no("faturado")
    hora.add_element faturado

    #Deposito em Faturado
    #loop Deposito Faturado
    @d.each do |d|
      @deposito_faturado_nome = d.nome.upcase_br
      @deposito_faturado_id = d.id
      @valor_faturado = d.soma_s_d_dt_f(4,d.id,@hoje) + d.soma_s_d_dt_f(9,d.id,@hoje)
      @total_faturado = d.soma_s_dt_f(4,@hoje) + d.soma_s_dt_f(9,@hoje)
      deposito_faturado = no("deposito")
      deposito_faturado.attributes["nome"] = "#{@deposito_faturado_nome}"
      deposito_faturado.attributes["id"] = "#{@deposito_faturado_id}"
      faturado.add_element deposito_faturado

      #Valor em Deposito
      valor_faturado = no("valor")
      valor_faturado.text = "#{@valor_faturado}"
      deposito_faturado.add_element valor_faturado
    end            
    #Total em Faturado
    total_faturado = no("total")
    total_faturado.text = "#{@total_faturado}"
    faturado.add_element total_faturado
    
    #carregamento_snota em Relatorio
    carregamento_snota = no("carregamento_snota")
    hora.add_element carregamento_snota 
        
    #valor em carregamento_snota
    valor_carregamento_snota = no("valor")
    valor_carregamento_snota.text = "#{@valor_carregamento_snota}"
    carregamento_snota.add_element valor_carregamento_snota
        
    #Separando em Relatorio
    separando = no("separando")
    hora.add_element separando
    
    ### Inicio do loop para o deposito Separando
    @total_separando = 0
    @d.each do |d|
      @deposito_separando_nome = d.nome.upcase_br
      @deposito_separando_id = d.id
      @valor_separando = d.soma_s_d(1,d.id).to_i + d.soma_s_d(3,d.id).to_i + d.soma_s_d(12,d.id).to_i + d.soma_s_d(13,d.id).to_i + d.soma_s_d(14,d.id).to_i
      @total_separando += @valor_separando
      #Deposito em Separando
      deposito_separando = no("deposito")
      deposito_separando.attributes["nome"] = "#{@deposito_separando_nome}"
      deposito_separando.attributes["id"] = "#{@deposito_separando_id}"
      separando.add_element deposito_separando
     
      #valor me Deposito_separando
      valor_separando = no("valor")          
      valor_separando.text = "#{@valor_separando}"
      deposito_separando.add_element valor_separando
    end
            
    #total em deposito_separando
    total_separando = no("total")
    total_separando.text = "#{@total_separando}"
    separando.add_element total_separando
        
    #Movimento_CD em relatorio
    movimento_cd = no("movimento_cd")
    hora.add_element movimento_cd
        
    valor_movimento_cd = no("valor")
    valor_movimento_cd.text = "#{@valor_movimento_cd}"
    movimento_cd.add_element valor_movimento_cd
          
    #gera_doc em relatorio
    gera_doc = no("gera_doc")
    hora.add_element gera_doc
        
    #gerado em gera_doc
    gerado = no("gerado")
    gera_doc.add_element gerado
            
    #valor em gerado
    valor_gerado = no("valor")
    valor_gerado.text = "#{@valor_gerado}"
    gerado.add_element valor_gerado
            
    #falt_ger em gera_doc
    falt_ger = no("falt_ger")
    gera_doc.add_element falt_ger

    #valor em gerado
    valor_falt_ger = no("valor")
    valor_falt_ger.text = "#{@valor_falt_ger}"
    falt_ger.add_element valor_falt_ger
            
    #total em gera_doc
    total_gera_doc = no("total")
    total_gera_doc.text = "#{@total_gera_doc}"
    gera_doc.add_element total_gera_doc
          
    ### Dispo_dia em relatorio
    dispo_dia = no("dispo_dia")
    hora.add_element dispo_dia
    
    @total_dispo_dia = 0
    @d.each do |d|
      @deposito_dispo_dia_nome = d.nome.upcase_br 
      @deposito_dispo_dia_id = d.id
      @valor_dispo_dia = d.soma_dia(d.id,@hoje)
      @total_dispo_dia += @valor_dispo_dia
      
      #deposito em dispo_dia
      deposito_dispo_dia = no("deposito")
      deposito_dispo_dia.attributes["nome"] = "#{@deposito_dispo_dia_nome}"
      deposito_dispo_dia.attributes["id"] = "#{@deposito_dispo_dia_id}"
      dispo_dia.add_element deposito_dispo_dia

      #valor em deposito_dispo_dia
      valor_dispo_dia = no("valor")
      valor_dispo_dia.text = "#{@valor_dispo_dia}"
      deposito_dispo_dia.add_element valor_dispo_dia
    end        
    #total em dispo_dia
    total_dispo_dia = no("total")
    total_dispo_dia.text = "#{@total_dispo_dia}"
    dispo_dia.add_element total_dispo_dia
    
   
    ### Gerado por deposito
    gerado_dia = no("gerado")
    hora.add_element gerado_dia
    @total_dispo_dia = 0
    @d.each do |d|
      @deposito_gerado_dia_nome = d.nome
      @deposito_gerado_dia_id = d.id
      @valor_gerado_dia = d.soma_s_d(10,d.id)
      @total_dispo_dia += @valor_gerado_dia
      #deposito em dispo_dia
      deposito_gerado_dia = no("deposito")
      deposito_gerado_dia.attributes["nome"] = "#{@deposito_gerado_dia_nome}"
      deposito_gerado_dia.attributes["id"] = "#{@deposito_gerado_dia_id}"
      gerado_dia.add_element deposito_gerado_dia

      #valor em deposito_dispo_dia
      valor_gerado_dia = no("valor")
      valor_gerado_dia.text = "#{@valor_gerado_dia}"
      deposito_gerado_dia.add_element valor_gerado_dia
    end
    #total em dispo_dia
    total_gerado_dia = no("total")
    total_gerado_dia.text = "#{@total_dispo_dia}"
    gerado_dia.add_element total_gerado_dia
    
    #### Falta Gerar por deposito
    faltagerar_dia = no("falta_gerar")
    hora.add_element faltagerar_dia
    @total_dispo_dia = 0
    @d.each do |d|
      @deposito_faltagerar_dia_nome = d.nome
      @deposito_faltagerar_dia_id = d.id
      @valor_faltagerar_dia = d.soma_s_d(15,d.id)
      @total_dispo_dia += @valor_faltagerar_dia
      #deposito em dispo_dia
      deposito_faltagerar_dia = no("deposito")
      deposito_faltagerar_dia.attributes["nome"] = "#{@deposito_faltagerar_dia_nome}"
      deposito_faltagerar_dia.attributes["id"] = "#{@deposito_faltagerar_dia_id}"
      faltagerar_dia.add_element deposito_faltagerar_dia
          
      #valor em deposito_dispo_dia
      valor_faltagerar_dia = no("valor")
      valor_faltagerar_dia.text = "#{@valor_faltagerar_dia}"
      deposito_faltagerar_dia.add_element valor_faltagerar_dia
    end            
    #total em dispo_dia
    total_faltagerar_dia = no("total")
    total_faltagerar_dia.text = "#{@total_dispo_dia}"
    faltagerar_dia.add_element total_faltagerar_dia  

    return hora
  end
  
  def salva_xml(s,arq = @hoje)
    @path = "email/#{arq}.xml"
    @nomearq = "public/#{@path}"
    unless File.directory?('public/email')
      Dir.mkdir('public/email')
      file = File.new(@nomearq,"w+")
      file.write s
      file.close
    else
      file = File.new(@nomearq,"w+")
      file.write s
      file.close
    end  
  end
  
  #  def gera_xml(arq = @hoje)
  #
  #    @hora = Time.now.hour.to_s.size == 1 ? "0" + Time.now.hour.to_s : Time.now.hour
  #
  #    @valor_carregamento_snota = @d[0].soma_s_data(3,@hoje[0..6])
  #
  #    @valor_movimento_cd
  #    @valor_gerado = @d[0].soma_s(10)
  #    @valor_falt_ger = @d[0].soma_s(15)  
  #    @total_gera_doc = @valor_gerado + @valor_falt_ger
  #   
  #    #raiz
  #    relatorio = raiz_xml.root
  #    
  #    #hora
  #    hora = no("horario")
  #    hora.attributes["hora"] = "#{@hora}"
  #    relatorio.add_element hora
  #    
  #    #Faturado em hora
  #    faturado = no("faturado")
  #    hora.add_element faturado
  #
  #    #Deposito em Faturado
  #    #loop Deposito Faturado
  #    @d.each do |d|
  #      @deposito_faturado_nome = d.nome.upcase_br
  #      @deposito_faturado_id = d.id
  #      @valor_faturado = d.soma_s_d_dt_f(4,d.id,@hoje) + d.soma_s_d_dt_f(9,d.id,@hoje)
  #      @total_faturado = d.soma_s_dt_f(4,@hoje) + d.soma_s_dt_f(9,@hoje)
  #      deposito_faturado = no("deposito")
  #      deposito_faturado.attributes["nome"] = "#{@deposito_faturado_nome}"
  #      deposito_faturado.attributes["id"] = "#{@deposito_faturado_id}"
  #      faturado.add_element deposito_faturado
  #
  #      #Valor em Deposito
  #      valor_faturado = no("valor")
  #      valor_faturado.text = "#{@valor_faturado}"
  #      deposito_faturado.add_element valor_faturado
  #    end            
  #    #Total em Faturado
  #    total_faturado = no("total")
  #    total_faturado.text = "#{@total_faturado}"
  #    faturado.add_element total_faturado
  #    
  #    #carregamento_snota em Relatorio
  #    carregamento_snota = no("carregamento_snota")
  #    hora.add_element carregamento_snota 
  #        
  #    #valor em carregamento_snota
  #    valor_carregamento_snota = no("valor")
  #    valor_carregamento_snota.text = "#{@valor_carregamento_snota}"
  #    carregamento_snota.add_element valor_carregamento_snota
  #        
  #    #Separando em Relatorio
  #    separando = no("separando")
  #    hora.add_element separando
  #    
  #    ### Inicio do loop para o deposito Separando
  #    @total_separando = 0
  #    @d.each do |d|
  #      @deposito_separando_nome = d.nome.upcase_br
  #      @deposito_separando_id = d.id
  #      @valor_separando = d.soma_s_d(1,d.id).to_i + d.soma_s_d(3,d.id).to_i + d.soma_s_d(12,d.id).to_i + d.soma_s_d(13,d.id).to_i + d.soma_s_d(14,d.id).to_i
  #      @total_separando += @valor_separando
  #      #Deposito em Separando
  #      deposito_separando = no("deposito")
  #      deposito_separando.attributes["nome"] = "#{@deposito_separando_nome}"
  #      deposito_separando.attributes["id"] = "#{@deposito_separando_id}"
  #      separando.add_element deposito_separando
  #     
  #      #valor me Deposito_separando
  #      valor_separando = no("valor")          
  #      valor_separando.text = "#{@valor_separando}"
  #      deposito_separando.add_element valor_separando
  #    end
  #            
  #    #total em deposito_separando
  #    total_separando = no("total")
  #    total_separando.text = "#{@total_separando}"
  #    separando.add_element total_separando
  #        
  #    #Movimento_CD em relatorio
  #    movimento_cd = no("movimento_cd")
  #    hora.add_element movimento_cd
  #        
  #    valor_movimento_cd = no("valor")
  #    valor_movimento_cd.text = "#{@valor_movimento_cd}"
  #    movimento_cd.add_element valor_movimento_cd
  #          
  #    #gera_doc em relatorio
  #    gera_doc = no("gera_doc")
  #    hora.add_element gera_doc
  #        
  #    #gerado em gera_doc
  #    gerado = no("gerado")
  #    gera_doc.add_element gerado
  #            
  #    #valor em gerado
  #    valor_gerado = no("valor")
  #    valor_gerado.text = "#{@valor_gerado}"
  #    gerado.add_element valor_gerado
  #            
  #    #falt_ger em gera_doc
  #    falt_ger = no("falt_ger")
  #    gera_doc.add_element falt_ger
  #
  #    #valor em gerado
  #    valor_falt_ger = no("valor")
  #    valor_falt_ger.text = "#{@valor_falt_ger}"
  #    falt_ger.add_element valor_falt_ger
  #            
  #    #total em gera_doc
  #    total_gera_doc = no("total")
  #    total_gera_doc.text = "#{@total_gera_doc}"
  #    gera_doc.add_element total_gera_doc
  #          
  #    ### Dispo_dia em relatorio
  #    dispo_dia = no("dispo_dia")
  #    hora.add_element dispo_dia
  #    
  #    @total_dispo_dia = 0
  #    @d.each do |d|
  #      @deposito_dispo_dia_nome = d.nome.upcase_br 
  #      @deposito_dispo_dia_id = d.id
  #      @valor_dispo_dia = d.soma_dia(d.id,@hoje)
  #      @total_dispo_dia += @valor_dispo_dia
  #      
  #      #deposito em dispo_dia
  #      deposito_dispo_dia = no("deposito")
  #      deposito_dispo_dia.attributes["nome"] = "#{@deposito_dispo_dia_nome}"
  #      deposito_dispo_dia.attributes["id"] = "#{@deposito_dispo_dia_id}"
  #      dispo_dia.add_element deposito_dispo_dia
  #
  #      #valor em deposito_dispo_dia
  #      valor_dispo_dia = no("valor")
  #      valor_dispo_dia.text = "#{@valor_dispo_dia}"
  #      deposito_dispo_dia.add_element valor_dispo_dia
  #    end        
  #    #total em dispo_dia
  #    total_dispo_dia = no("total")
  #    total_dispo_dia.text = "#{@total_dispo_dia}"
  #    dispo_dia.add_element total_dispo_dia
  #    
  #   
  #    ### Gerado por deposito
  #    gerado_dia = no("gerado")
  #    hora.add_element gerado_dia
  #    @total_dispo_dia = 0
  #    @d.each do |d|
  #      @deposito_gerado_dia_nome = d.nome
  #      @deposito_gerado_dia_id = d.id
  #      @valor_gerado_dia = d.soma_s_d(10,d.id)
  #      @total_dispo_dia += @valor_gerado_dia
  #      #deposito em dispo_dia
  #      deposito_gerado_dia = no("deposito")
  #      deposito_gerado_dia.attributes["nome"] = "#{@deposito_gerado_dia_nome}"
  #      deposito_gerado_dia.attributes["id"] = "#{@deposito_gerado_dia_id}"
  #      gerado_dia.add_element deposito_gerado_dia
  #
  #      #valor em deposito_dispo_dia
  #      valor_gerado_dia = no("valor")
  #      valor_gerado_dia.text = "#{@valor_gerado_dia}"
  #      deposito_gerado_dia.add_element valor_gerado_dia
  #    end
  #    #total em dispo_dia
  #    total_gerado_dia = no("total")
  #    total_gerado_dia.text = "#{@total_dispo_dia}"
  #    gerado_dia.add_element total_gerado_dia
  #    
  #    #### Falta Gerar por deposito
  #    faltagerar_dia = no("falta_gerar")
  #    hora.add_element faltagerar_dia
  #    @total_dispo_dia = 0
  #    @d.each do |d|
  #      @deposito_faltagerar_dia_nome = d.nome
  #      @deposito_faltagerar_dia_id = d.id
  #      @valor_faltagerar_dia = d.soma_s_d(15,d.id)
  #      @total_dispo_dia += @valor_faltagerar_dia
  #      #deposito em dispo_dia
  #      deposito_faltagerar_dia = no("deposito")
  #      deposito_faltagerar_dia.attributes["nome"] = "#{@deposito_faltagerar_dia_nome}"
  #      deposito_faltagerar_dia.attributes["id"] = "#{@deposito_faltagerar_dia_id}"
  #      faltagerar_dia.add_element deposito_faltagerar_dia
  #          
  #      #valor em deposito_dispo_dia
  #      valor_faltagerar_dia = no("valor")
  #      valor_faltagerar_dia.text = "#{@valor_faltagerar_dia}"
  #      deposito_faltagerar_dia.add_element valor_faltagerar_dia
  #    end            
  #    #total em dispo_dia
  #    total_faltagerar_dia = no("total")
  #    total_faltagerar_dia.text = "#{@total_dispo_dia}"
  #    faltagerar_dia.add_element total_faltagerar_dia
  #          
  #    #escreve o arquivo
  #    s = ""
  #    relatorio.write(s,0)
  #          
  #    @path = "email/#{arq}.xml"
  #    @nomearq = "public/#{@path}"
  #    unless File.directory?('public/email')
  #      Dir.mkdir('public/email')
  #      file = File.new(@nomearq,"w+")
  #      file.write s
  #      file.close
  #    else
  #      file = File.new(@nomearq,"w+")
  #      file.write s
  #      file.close
  #    end  
  #  end
  
end















